package com.neuedu.fileIO;

import java.io.FileInputStream;

import java.io.FileOutputStream;


public class StreamIOTestDriver {
    public static void main(String[] args) {
        test02();
    }

    /**
     * 字节流的应用：文件输出流
     */
    private static void test02() {

        try {
            //创建一个文件输入流对象

            FileInputStream fis = new FileInputStream("D:\\temp\\iotest/filein01.txt");
            //创建一个文件输出流对象
            //注意：第二个参数默认是false，表示每次从文件的开头开始写入内容，也就是覆盖写；
            //      如果第二个参数是true，表示每次从文件的末尾开始写，也就是末尾追加写；
            FileOutputStream fos = new FileOutputStream("D:\\temp\\iotest/filein01_out.txt",true);

            //创建一个读取文件输入流中的流数据的容器数组
            byte[] bytes = new byte[1024];
            //将文件流对象中的内容读取到程序中
            int len = fis.read(bytes);

            //判断是否读取到文件末尾
            while (len != -1) {

                //输出读取内容
                String strLine = new String(bytes, "GBK");
                System.out.println(strLine);
                //使用文件输出流对象，将内容写出到指定文件中
                fos.write(bytes, 0, len);



                //重新清理读取的容器数组
                bytes = new byte[1024];
                //继续往下读取内容
                len = fis.read(bytes);

            }

            //文件输出流写完后，在文件末尾追加一个换行符
            fos.write("\n".getBytes());

            //关闭资源
            //也可以写在finally部分进行资源回收
            if (fis!=null){
                fis.close();
            }
                //清空输出流
            if (fos!=null) {
                fos.flush();
                fos.close();
            }
        } catch(Exception e){
                e.printStackTrace();
     }
}



    /**
     * 字节流的应用：文件输入流
     */
    private static void test01() {

        try {
            //创建一个文件输入流对象

            FileInputStream fis = new FileInputStream("D:\\temp\\iotest/filein01.txt");
            //创建一个读取文件输入流中的流数据的容器数组
            byte[] bytes = new byte[1024];
            //将文件流对象中的内容读取到程序中
            int len = fis.read(bytes);
            //输出读取内容
            String strLine=new String(bytes,"GBK");
            System.out.println(strLine);
            //判断是否读取到文件末尾
            while (len != -1) {
                //重新清理读取的容器数组
                bytes = new byte[1024];
                len = fis.read(bytes);
                //输出读取内容
                strLine=new String(bytes,"GBK");
                System.out.println(strLine);
            }
        }
         catch (Exception e) {
            e.printStackTrace();
        }
    }
}
